﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SWBetongXaydung.GUI.Common;
using SWBetongXaydung.BLL;
using SWBetongXaydung.GUI.Utils;

namespace SWBetongXaydung.GUI.TacNghiep
{
    public partial class UCQuyetToan : BaseUserControl
    {
        int thang, nam;
        public UCQuyetToan()
        {
            InitializeComponent();
            cmbThang.Text = DateTime.Now.Month.ToString();
            cmbNam.Text = DateTime.Now.Year.ToString();
            InitGrid();
        }

        /// <summary>
        /// Khởi tạo các tham số cho grid
        /// </summary>
        void InitGrid()
        {
            dgQuyetToan.AutoGenerateColumns = false;
            colHoTen.DataPropertyName = "TenDayDu";
            colSoXe.DataPropertyName = "SoXe";
            colSDN.DataPropertyName = "SoDuDauKy";
            colTienMat.DataPropertyName = "TienMat";
            colNhienLieuDuocCap.DataPropertyName = "SoDauTamUng";
            colNhienLieuTieuThu.DataPropertyName = "SoDauTieuThu";
            colSoLitThuaThieu.DataPropertyName = "SoDauConLai";
            colDonGia.DataPropertyName = "DonGia";
            colThanhTien.DataPropertyName = "ThanhTien";
            colGiaTriCuoiKy.DataPropertyName = "GiaTriCuoiKy";
            colDaQuyetToan.DataPropertyName = "DaQuyetToan";
            dgQuyetToan.Columns["colSDN"].DefaultCellStyle.Format = "#,0.00";
            dgQuyetToan.Columns["colTienMat"].DefaultCellStyle.Format = "#,0.00";
            dgQuyetToan.Columns["colDonGia"].DefaultCellStyle.Format = "#,0.00";
            dgQuyetToan.Columns["colThanhTien"].DefaultCellStyle.Format = "#,0.00";
            dgQuyetToan.Columns["colGiaTriCuoiKy"].DefaultCellStyle.Format = "#,0.00";
        }

        /// <summary>
        /// Kiểm tra hợp lệ dữ liệu đầu vào
        /// </summary>
        /// <returns></returns>
        bool validateData()
        {
            errorNotify.Clear();
            int i = 0;
            if (!int.TryParse(cmbThang.Text, out i))
            {
                errorNotify.SetError(cmbThang, "Bạn nhập sai tháng");
                return false;
            }
            if (!int.TryParse(cmbNam.Text, out i))
            {
                errorNotify.SetError(cmbNam, "Bạn nhập sai năm");
                return false;
            }
            thang = int.Parse(cmbThang.Text);
            nam = int.Parse(cmbNam.Text);
            return true;
        }

        private void btnThongKe_Click(object sender, EventArgs e)
        {
            if (validateData())
            {
                List<ThongKeTongHopThanhToan> list = null;
                bool isRutGon = chkBanRutGon.Checked;
                var frmProgress = new FormProgress();
                frmProgress.DoWork += (s, o) =>
                {
                    list = QuyetToanBLL.GetList(thang, nam, isRutGon);
                };
                frmProgress.RunWorkerCompleted += (s, o) =>
                {
                    bdQuyetToan.DataSource = list;
                    dgQuyetToan.DataSource = bdQuyetToan;
                };
                frmProgress.StartWorking(this.Parent as Form);
            }
        }

        private void dgQuyetToan_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            if (e.ColumnIndex == 3 || e.ColumnIndex == 2)
            {
                double t = 0;
                if (!double.TryParse(e.FormattedValue.ToString(), out t))
                {
                    DialogUtils.ShowError("Bạn phải nhập số");
                    e.Cancel = true;
                }
            }
        }

        private void dgQuyetToan_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            var curent = bdQuyetToan.Current as ThongKeTongHopThanhToan;
            if (curent != null)
            {
                if (QuyetToanBLL.UpdateTienMatOrSoDuDauKy(curent.Thang, curent.Nam, curent.IDTaiXe, curent.SoXe, curent.TienMat, curent.SoDuDauKy) == CODE_RESULT_RETURN.ThatBai)
                    DialogUtils.ShowError("Không thể lưu vào hệ thống");
            }
        }

        private void btnQuyetToan_Click(object sender, EventArgs e)
        {
            var ls = bdQuyetToan.DataSource as List<ThongKeTongHopThanhToan>;
            if (ls != null && ls.Count > 0)
            {
                if (QuyetToanBLL.QuyetToan(ls) == CODE_RESULT_RETURN.ThatBai)
                    DialogUtils.ShowError("Không thể quyết toán");
                else
                {
                    foreach (var item in ls)
                        item.DaQuyetToan = true;
                    dgQuyetToan.Refresh();
                    DialogUtils.ShowMessage("Đã quyết toán thành công");
                }
            }
        }

        private void UCQuyetToan_ControlRemoved(object sender, ControlEventArgs e)
        {
            //if (_dbContext != null)
            //    _dbContext.Dispose();
        }
    }
}
